Function.prototype.myCall = function (context = window, ...args) {
    if (Function.prototype instanceof this) { // 注意
        return new Error("不能是自己")
    }
    let x = Symbol();
    context[x] = this;
    let res = context[x](...args)
    delete context[x]
    return res;
}

Function.prototype.myApply = function (context = window, args) {
    if (Function.prototype instanceof this) { // 注意
        return new Error("不能是自己")
    }
    let res;
    let x = Symbol();
    context[x] = this;
    if (!Array.isArray(args)) {
        res = context[x]()
    } else {
        res = context[x](args)
    }
    delete context[x]
    return res;
}

Function.prototype.myBind = function (context = window, args) {
    return function (...args) {
        let res;
        let x = Symbol();
        context[x] = this;
        res = context[x](...args)
        delete context[x]
        return res;
    }
}